最全MySQL8.0实战教程 16 MySQL的触发器 16.2 触发器的操作【2 NEW和OLD】 您所在的位置:网站首页 mysql触发器new old用法详解 最全MySQL8.0实战教程 16 MySQL的触发器 16.2 触发器的操作【2 NEW和OLD】

最全MySQL8.0实战教程 16 MySQL的触发器 16.2 触发器的操作【2 NEW和OLD】

2024-06-26 23:21| 来源: 网络整理| 查看: 265

最全MySQL8.0实战教程

文章目录 最全MySQL8.0实战教程16 MySQL的触发器16.2 触发器的操作【2 NEW和OLD】16.2.1 格式16.2.2 操作

【黑马程序员MySQL知识精讲+mysql实战案例_零基础mysql数据库入门到高级全套教程】

16 MySQL的触发器 16.2 触发器的操作【2 NEW和OLD】 16.2.1 格式

MySQL 中定义了 NEW 和 OLD,用来表示触发器的所在表中,触发了触发器的那一行数据,来引用触发器中发生变化的记录内容,具体地:

触发器类型触发器类型NEW 和 OLD的使用INSERT 型触发器NEW 表示将要或者已经新增的数据 【新增只有新的,没有旧的】UPDATE 型触发器OLD 表示修改之前的数据 , NEW 表示将要或已经修改后的数据DELETE 型触发器OLD 表示将要或者已经删除的数据

在这里插入图片描述

使用方法:

NEW.columnName (columnName为相应数据表某一列名)

在我们之前的那个案例中,就是说每次新增或者修改数据时,记录的日志不是死的,而是能够显示我们活的数据信息。

16.2.2 操作

【insert 类型的触发器】

create trigger trigger_test3 after insert on user for each row insert into user_logs values(NULL,now(),concat('有新用户添加,信息为:',NEW.uid,NEW.username,NEW.password)); -- 测试 insert into user values(4,'赵六','123456');

在这里插入图片描述

查看两个表

在这里插入图片描述

【update 类型的触发器 - OLD修改之前】

create trigger trigger_test4 after update on user for each row insert into user_logs values(NULL,now(),concat('有用户信息进行了修改,信息修改之前为:',OLD.uid,OLD.username,OLD.password)); update user set password = '999999' where uid = 4;

在这里插入图片描述

直接看表

在这里插入图片描述

【update 类型的触发器 - NEW修改之后】

create trigger trigger_test5 after update on user for each row insert into user_logs values(NULL,now(),concat('有用户信息进行了修改,信息修改之后为:',NEW.uid,NEW.username,NEW.password)); update user set password = '5201314' where uid = 1;

在这里插入图片描述

直接看两个表

在这里插入图片描述

【其实】不止是SQL 语句操作,手动直接修改表中数据时,只要满足了触发器的触发条件,都会让我们写的触发器触发,从而进行操作。

【delete 类型的触发器,只有OLD没有NEW,即只有之前,没有之后】

create trigger trigger_test6 after delete on user for each row insert into user_logs values(NULL,now(),concat('有用户信息被删除了,删除用户信息为:',OLD.uid,OLD.username,OLD.password)); delete from user where uid = 1;

在这里插入图片描述

直接查看两表

在这里插入图片描述

就是这样。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有